# -*- coding: UTF-8 -*- #
"""
@filename:01-2读取视频.py
@author:JiYujia
@time:2022-09-04
"""

# 1、引入opencv库
import cv2

# 2、读取本地视频
cap = cv2.VideoCapture('pics/dog.mp4')

# 代码最后会报错，修改参考https://blog.csdn.net/hallobike/article/details/120295986
# 报错原因：原因是视频结束后，opencv的imshow()函数读不了帧就出错了。解决方法：在imshow()之前加入判断，只有当有帧时才读，没有帧时直接退出循环。
# # 使用isOpened()来检查是否成功
# if not cap.isOpened():
#     print('ERROR')
#
# # 3循环显示
# while True:
#     state, frame = cap.read()
#     # 参数state为True或者False,代表有没有读取到图片
#     cv2.imshow('frame', frame)
#
#     # 4键值等待
#     if cv2.waitKey(1) & 0xff == ord('q'):
#         break

# 使用isOpened()来检查是否成功
if not cap.isOpened():
    print('ERROR')

# 3循环显示
while cap.isOpened():
    # 参数state为True或者False,代表有没有读取到图片
    state, frame = cap.read()

    if not state:
        break

    cv2.imshow('frame', frame)

    # 4键值等待
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

print('视频读完')
cap.release()
cv2.destroyAllWindows()